Over time, hash functions once considered to be adequately secure and/or collision resistant may come to be considered to have been “weakened”. For example, a hash function may be considered to be less secure than once thought if researchers or actual attackers have found ways to determine the input that was provided to the function to generate a given output, and/or if it is found that for two different inputs the hash function may sometimes produce the same output.
Specifically, the SHA-1 and MD5 hash functions once were considered to be secure (i.e., hard to invert) and (for practical purposes) collision free, but at least for certain applications they are considered to be weakened.
Hash functions have been used to store data one a de-duplicated basis. Data to be stored, e.g., a file or other object, may be broken into a plurality of “chunks” and a hash function may be used to determining for each chunk a corresponding hash value. An index or other data structure may be checked to determine if the hash value is already present, indicating the same data has already been stored. If so, a reference to the data as previously stored may be provided, instead of storing the same data again.
Data may be stored over a long period of time, e.g., a number of years. Over time, a hash function used to manage the storage of data, e.g., to perform de-duplication, may need to be replaced with a newer, more robust hash function.